import com.dinmax.labonline.*

class com.dinmax.labonline.Comunicacion {
	
public static var SERVICIO:String="http://192.168.0.75:8080/labonline/broker";
	public static var ACCION_LOGIN=0;
	public static var ACCION_UPLOAD=1;
	public static var ACCION_REFRESH=2;	
	public static var ACCION_AGREGAR_ALBUM=3;
	public static var ACCION_QUITAR_ALBUM=4;
	public static var ACCION_MODIFICAR_ALBUM=5;	
	public static var ACCION_AGREGAR_FOTO=6;
	public static var ACCION_QUITAR_FOTO=7;
	public static var ACCION_MODIFICAR_FOTO=8;	
	public static var ACCION_EFECTO_FOTO=9;
	public static var ACCION_EFECTO_GRABAR_FOTO=10;
	public static var ACCION_GET_FOTO_CHICA=11;
	public static var ACCION_GET_FOTO_GRANDE=12;
	public static var ACCION_MOVER_FOTO=13;
	
	public static var ACCION_PEDIDO_ALTA=14;
	public static var ACCION_PEDIDO_GET = 15;	
	public static var ACCION_FORMAPAGO_GET = 16;
	public static var ACCION_FORMATO_GET = 17;
	
	
	public static function login(usuario:String,clave:String):Void {
		var sender:LoadVars=new LoadVars();
		var reciver:LoadVars=new LoadVars();		
		
		sender.par_nick=usuario;
		sender.par_clave=clave;
		sender.accion==ACCION_LOGIN;


		reciver.onLoad=function ():Void {
			LabManager.newData(parseText(this.toString()));			
		}		
		sender.sendAndLoad(SERVICIO,reciver);
	}
	
	
// --------------------------------------------------------------------------------
//  EFECTOS
// --------------------------------------------------------------------------------		
	public static function aplicarEfecto(foto:Foto,efecto:Efecto):Void {
		var sender:LoadVars=new LoadVars();
		var reciver:LoadVars=new LoadVars();		
		
		sender.accion=ACCION_EFECTO_FOTO;
		sender.par_foto_id=foto.getId();
	
		sender.par_efecto_brillo=efecto.getBrillo();
		sender.par_efecto_contraste=efecto.getContraste();
		sender.par_efecto_fliphorizontal=efecto.getFlipHorizontal();
		sender.par_efecto_flipvertical=efecto.getFlipVertical();		
		sender.par_efecto_invertircolor=efecto.getInvertirColor();
		sender.par_efecto_rotacion=efecto.getRotacion();
		sender.par_efecto_imagen=efecto.getEfectoColor();
		

		reciver.onLoad=function ():Void {
			LabManager.newData(parseText(this.toString()));			
		}		
		sender.sendAndLoad(SERVICIO,reciver);
	}

	
// --------------------------------------------------------------------------------
//  ALBUM
// --------------------------------------------------------------------------------		
	public static function addAlbum(nombre:String,descripcion:String):Void {
		var sender:LoadVars=new LoadVars();
		var reciver:LoadVars=new LoadVars();		
		
		sender.par_album_nombre=nombre;
		sender.par_album_descripcion=descripcion;
		sender.accion=ACCION_AGREGAR_ALBUM;

		reciver.onLoad=function ():Void {
			LabManager.newData(parseText(this.toString()));			
		}		
		sender.sendAndLoad(SERVICIO,reciver);
	}
	
	public static function modifyAlbum(_album:Album):Void {
		var sender:LoadVars=new LoadVars();
		var reciver:LoadVars=new LoadVars();		
		sender.par_album_id=_album.getId();
		sender.par_album_nombre=_album.getNombre();
		sender.par_album_descripcion=_album.getDescripcion();
		sender.accion=ACCION_MODIFICAR_ALBUM;;

		reciver.onLoad=function ():Void {
			LabManager.newData(parseText(this.toString()));			
		}		
		sender.sendAndLoad(SERVICIO,reciver);
	}
	
	public static function deleteAlbum(_album:Album):Void {
		var sender:LoadVars=new LoadVars();
		var reciver:LoadVars=new LoadVars();		
		sender.par_album_id=_album.getId();
		sender.accion=ACCION_QUITAR_ALBUM;
						

		reciver.onLoad=function ():Void {
			LabManager.newData(parseText(this.toString()));			
		}		
		sender.sendAndLoad(SERVICIO,reciver);
	}	
	

	
// --------------------------------------------------------------------------------
//  FOTO
// --------------------------------------------------------------------------------	

		public static function getFotoChica(foto:Foto):String {
			return SERVICIO+"?accion="+ACCION_GET_FOTO_CHICA+"&par_foto_id="+foto.getId();
		}
		public static function getFotoGrande(foto:Foto):String {
			return SERVICIO+"?accion="+ACCION_GET_FOTO_GRANDE+"&par_foto_id="+foto.getId();
		}
		
	public static function borrarFoto(foto:Foto):Void {
		var sender:LoadVars=new LoadVars();
		var reciver:LoadVars=new LoadVars();		

		sender.accion=ACCION_QUITAR_FOTO;
		sender.par_foto_id=foto.getId();

		reciver.onLoad=function ():Void {
			LabManager.newData(parseText(this.toString()));			
		}		
		sender.sendAndLoad(SERVICIO,reciver);
	}
	
	public static function moveFoto(foto:Foto,album:Album):Void {
		var sender:LoadVars=new LoadVars();
		var reciver:LoadVars=new LoadVars();		

		sender.accion=ACCION_MOVER_FOTO;
		sender.par_foto_id=foto.getId();
		sender.par_album_id=album.getId();

		reciver.onLoad=function ():Void {
			LabManager.newData(parseText(this.toString()));			
		}		
		sender.sendAndLoad(SERVICIO,reciver);
	}
	
// --------------------------------------------------------------------------------
//  GENERAL
// --------------------------------------------------------------------------------	
	public static function getFormatos():Void {
		var sender:LoadVars=new LoadVars();
		var reciver:LoadVars=new LoadVars();		

		sender.accion=ACCION_FORMATO_GET;

		reciver.onLoad=function ():Void {
			LabManager.newData(parseText(this.toString()));			
		}		
		sender.sendAndLoad(SERVICIO,reciver);
	}
	
	public static function getFormaPago():Void {
		var sender:LoadVars=new LoadVars();
		var reciver:LoadVars=new LoadVars();		

		sender.accion=ACCION_FORMAPAGO_GET;

		reciver.onLoad=function ():Void {
			LabManager.newData(parseText(this.toString()));			
		}		
		sender.sendAndLoad(SERVICIO,reciver);
	}	
// --------------------------------------------------------------------------------
//  PEDIDO
// --------------------------------------------------------------------------------	

	public static function getPedidos():Void {
		var sender:LoadVars=new LoadVars();
		var reciver:LoadVars=new LoadVars();		

		sender.accion=ACCION_PEDIDO_GET;

		reciver.onLoad=function ():Void {
			LabManager.newData(parseText(this.toString()));			
		}		
		sender.sendAndLoad(SERVICIO,reciver);
	}	

	public static function newPedido(pedido:Pedido):Void {
		var sender:LoadVars=new LoadVars();
		var reciver:LoadVars=new LoadVars();		

		sender.accion=ACCION_PEDIDO_ALTA;
	
		sender.par_pedido_formapago=pedido.getFormaPago().getId();
		sender.par_pedido_item_cantidades="";
		sender.par_pedido_item_formatos="";
		sender.par_pedido_item_fotos="";
		
		var hijos:Array=pedido.getItemsPedidos();
		for (var o:Number=0;o<hijos.length;o++) {

			var b=hijos[o] ;
			sender.par_pedido_item_cantidades+=b.getCopias()+";";
			sender.par_pedido_item_formatos+=b.getFormato().getId()+";";			
			sender.par_pedido_item_fotos+=b.getFoto().getId()+";";			
		}
				
		reciver.onLoad=function ():Void {
			LabManager.newData(parseText(this.toString()));			
		}		
		sender.sendAndLoad(SERVICIO,reciver);
	}	

// --------------------------------------------------------------------------------
//  UTILIDADES
// --------------------------------------------------------------------------------		
	public static function parseText(text:String):String {
		text=replace(text,"%7C","|");
		text=replace(text,"%20"," ");
		text=replace(text,"%2D","-");
		text=replace(text,"%2E",".");
		text=replace(text,"%3A",":");
		text=replace(text,"%0A","\n");
		text=replace(text,"%22","\"");
		return text;
		
	}
	
	public static function replace(text:String,busqueda:String,reemplazo:String):String {
		var lenBusqueda:Number=busqueda.length;
		var lenReemplazo:Number=reemplazo.length;		
		var pos:Number=text.indexOf(busqueda);
		while (pos>-1) {
			text=text.substring(0,pos)+reemplazo+text.substring(pos+lenBusqueda)
			pos=text.indexOf(busqueda);
			
		}
		return text;
	}
}
